import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
// 解决vite对commonjs兼容性差，导致无法引入jsoneditor
import {viteCommonjs} from '@originjs/vite-plugin-commonjs'
// 如果是用vite来构建的，根据vite官方文档描述，build.target默认支持 Chrome >=87、Firefox >=78、Safari >=14、Edge >=88，所以需要我们手动兼容低版本
import legacyPlugin from '@vitejs/plugin-legacy';


// https://vitejs.dev/config/
export default defineConfig(({command, mode, ssrBuild}) => {
	const env = loadEnv(mode, process.cwd());
	return {
		plugins: [
			vue(),
			viteCommonjs(),
			legacyPlugin({
				targets: ["chrome < 60", "edge < 15"], // 需要兼容的目标列表，可以设置多个
			   additionalLegacyPolyfills: ["regenerator-runtime/runtime"], // 面向IE11时需要此插件
			   renderLegacyChunks: true,
			})
		],
		base: '/bi_frontend',
		resolve: {
			alias: {
				'@': fileURLToPath(new URL('./src', import.meta.url))
			}
		},
		// 本地运行配置，及反向代理配置
		server: {
			host: '0.0.0.0',
			cors: true, // 默认启用并允许任何源
			open: true, // 在服务器启动时自动在浏览器中打开应用程序
			// 反向代理配置，注意rewrite写法，开始没看文档在这里踩了坑
			proxy: {// 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
				'/api/bi/': {
					target: 'http://127.0.0.1/5003', // 通过代理接口访问实际地址。这里是实际访问的地址。vue会通过代理服务器来代理请求
					changeOrigin: true,
					//ws: true,  // 允许websocket代理
					rewrite: (path) => path.replace(/^\/api/, '') // 将api替换为空
				}
			}
		},
		build: {
			outDir: 'build/bi_frontend'
		}
	}
})
